Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

204
Views
Recibí un objeto NULL en el controlador cuando envié una solicitud desde la vista (Ajax), incluso si uso [FromBody] C#

Modelo:

 public class From { public DateTime from { get; set; } public DateTime to { get; set; } }

Controlador:

 public MediaViewModel DashboardMediaByDate([FromBody] From y) { // some logic }

Vista:

 <script> $(function () { // Get value on button click and show alert $("#myBtn").click(function () { var from = { from: $("#from").val(), to: $("#to").val() }; alert(from.from); var y = JSON.stringify(from); $.ajax({ type: "POST", data: y, dataType: 'json', url: "/Queues/DashboardMediaByDate", contentType: "application/json" }).done(function (res) { alert(res); }); }); }); </script>

Cuando depuro la solicitud del navegador:

Solicitud de carga útil del encabezado

Lo que recibí en el controlador:

Parámetro del método
¿Cómo puedo enviar el objeto al controlador desde el modelo de vista?

Gracias por adelantado,

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Puede usar la siguiente llamada AJAX para obtener sus datos según sea necesario:

AJAX :

 <script> $(function () { // Get value on button click and show alert $("#myBtn").click(function () { var from = { from: $("#from").val(), to: $("#to").val() }; alert(from.from); $.ajax({ type: "POST", data: {'json': JSON.stringify(from)}, dataType: 'json', url: "/Queues/DashboardMediaByDate" }).done(function (res) { alert(res); }); }); }); </script>

Y su método Controller :

 using System.Web.Script.Serialization; [HttpPost] public JsonResult DashboardMediaByDate(string json) { MediaViewModel myModel = new MediaViewModel(); var serializer = new JavaScriptSerializer(); dynamic jsondata = serializer.Deserialize(json, typeof(object)); //Get your variables here from AJAX call var from = Convert.ToDateTime(jsondata["from"]); var to = Convert.ToDateTime(jsondata["to"]); //Your logic return Json(new {myModel=myModel}); }

Cambios de su llamada original:

  1. contentType eliminado de su llamada AJAX
  2. Se agregó el atributo [HttpPost] en su método de Controller
  3. Se eliminó el atributo [FromBody] para obtener sus datos como una cadena JSON
  4. Cambió sus data para enviar una cadena JSON en lugar de un Model

Una vez que obtenga sus datos como una cadena JSON , puede deserializarlos en su estructura de Model según sea necesario. Usualmente uso este método cuando mi Model no tiene muchas propiedades.

Está utilizando AJAX para su funcionalidad, que generalmente se usa para actualizar una parte de la página sin recargar toda la página. Si desea redirigir en el método POST desde su Controller con un Model , entonces no use ajax para su propósito. Alternativamente, si sabe qué agregar a la vista que devuelve, maneje la devolución de llamada exitosa y actualice el DOM.

Puede acceder al Model anterior en su método de success dentro de su AJAX de esta manera:

 success: function(data) { //Get your model here console.log(data.myModel); }
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!